﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;

namespace Model
{
    // KundeCollection-klassen.
    public class KundeCollection
    {
        private List<Kunde> kundeListe;
        Kunde kunde;

        //// *** Test ***
        //Kunde testKunde;
        //// *** Test ***


        // Konstruktør.
        public KundeCollection()
        {
            kundeListe = new List<Kunde>();

            //// *** Test ***
            //testKunde = OpretKunde("Hans", "Baldursgade 15", "here@there.com", (Int32)5000, (Int32)1122, (long)11223344);
            //// *** Test ***
        }

        public List<Kunde> KundeListe
        {
            get { return kundeListe; }
            set { kundeListe = value; }
        }
        
        #region FindMetoder
        public Kunde FindKundeTlf(long tlf)
        {
            foreach (Kunde kunde in kundeListe)
            {
                if (kunde.TlfNr == tlf)
                {
                    return kunde;
                }
            }
            return null;
        }

        public Kunde FindKunde(int kundeNr)
        {
            foreach (Kunde kunde in kundeListe)
            {
                if (kunde.KundeNr == kundeNr || kunde.PostNr == kundeNr)
                {
                    return kunde;
                }
            }
            return null;
        }

        public Kunde FindKundeMail(string mail)
        {
            foreach (Kunde kunde in kundeListe)
            {
                if (kunde.Mail == mail)
                {
                    return kunde;
                }
            }
            return null;
        }

        public IEnumerator FindKundeNavn(string navn)
        {
            List<Kunde> kunder = new List<Kunde>();
            foreach (Kunde k in kundeListe)
            {
                if (kunde.Navn.Contains(navn))
                {
                    kunder.Add(k);
                }
            }
            return kunder.GetEnumerator();
        }

        public IEnumerator FindKundePost(int postNr)
        {
            List<Kunde> kunder = new List<Kunde>();
            foreach (Kunde k in kundeListe)
            {
                if (kunde.PostNr == postNr)
                {
                    kunder.Add(k);
                }
            }
            return kunder.GetEnumerator();
        }
        #endregion

        public Kunde OpretKunde(int kundeNr, string navn, string adresse, int postNr, long tlfNr, string mail)
        {
            kunde = new Kunde(kundeNr, navn, adresse, postNr, tlfNr, mail);
            kundeListe.Add(kunde);
            return kunde;
        }

        public void SletKunde(int kundenr)
        {
            kunde = FindKunde(kundenr);
            if (kunde != null)
            {
                kundeListe.Remove(kunde);
            }
        }

        public void RedigerKunde(Kunde kunde, string navn, string adresse, string mail, int postNr, int kundeId, long tlfNr)
        {
            kunde = FindKunde(kundeId);
            kunde.Navn = navn;
            kunde.Adresse = adresse;
            kunde.Mail = mail;
            kunde.PostNr = postNr;
            kunde.KundeNr = kundeId;
            kunde.TlfNr = tlfNr;
        }
    }
}
